Une première idée serait de coder le signe + par un 0 et le signe - par un 1. Ainsi $6_{10}=110_{2}$ se coderait alors en $0110_{2}$. Mais $-6_{10}$ se coderait alors en $1110_{2}$ comment faire la différence alors avec $14_{10}$?
Par conséquent nous allons devoir pous fixer un nombre de bits, $n$. On conserve alors le premier pour le signe et les $n-1$ autres pour le codage de la valeur absolue du nombre.
Ainsi sur 8 bits $-6_{10}$ se code en $1|0000110$
Un premier problème avec cette repsentation est que le chiffre $0_{10}$ a deux représentation. En effet sur 3 bits: $0_{10}=0|00_{2}$ et $0_{10}=1|00_{2}$
Un autre problème se pose avec cette méthode sur l'addition de deux nombres en binaires, nous le verrons dans A.4.
Cette représentation des entiers relatifs n'est pas celle que l'informatique a choisi.
La représentation d'un nombre entier naturel en binaire se fait de la même manière que dans le paragrphe précédent.
Si on dispose de $n$ bits, le premier sera 0 pour indiquer que l'entier est positif. Et les $n-1$ autres seront le codage en binaire de l'entier.
Cela signifie aussi que si l'on dispose de $n$ bits, nous ne pourrons pas dépasser un entier plus grand que $2^{n-1}-1$. Puisque nous ne disposons que de $n-1$ bits.
Voila la procédure :
Nous sommes sur 8 bits le 1 à la première position doit être enlevé. Nous retombons bien sur 0.
Avec n bits nous pouvons coder uniquement des entiers compris entre $-(2^{n-1}-1)$ et $2^{n-1}-1$
C'est le cas puisque le premier bits est réservés au signe de l'entier.
Il faut bien distinguer le nombre binaire de sa représentation en binaire.
$12_{10}=1100_{2}$ mais en représentation en complément à 2 sur 4 bits $1100_{2}=-4$